package net.biancheng.bean;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: lb
 * @Date: 2021/8/16 10:59
 * <p>
 * 将配置文件中配置的每一个属性的值，映射到这个组件中
 * 只有这个组件是容器中的组件，才能使用容器提供的@ConfigurationProperties功能；
 * @ConfigurationProperties：告诉 SpringBoot 将本类中的所有属性和配置文件中相关的配置进行绑定；
 * prefix = "person"：配置文件中哪个下面的所有属性进行一一映射
 */
@Component
@PropertySource(value = "classpath:person.properties") //指向对应的配置文件
@ConfigurationProperties(prefix = "person")
@Data
public class Person {
    // @ConfigurationProperties：支持所有类型数据的封装，例如 Map、List、Set、以及对象等；
    // @Value：只支持基本数据类型的封装，例如字符串、布尔值、整数等类型。
    //    @Value("${person.lastName}")
    private String lastName;
    //    @Value("${person.age}")
    private Integer age;
    //    @Value("${person.boss}")
    private Boolean boss;
    //    @Value("${person.birth}")
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;
}
